Interoperability using a local proxy server

ABSTRACT

A home-networking gateway may automatically provide a function based on data identified on a device on a home network. The home-networking gateway may perform the function using another device that is capable of performing the function and is accessible to the home-networking gateway.

TECHNICAL FIELD

This description relates to providing services to devices in a computernetwork using a local proxy server.

BACKGROUND

In a network of computing devices, each of several networked devices mayhave particular components or capabilities that are capable ofperforming one or more functions. As a consequence, the network ofcomputing devices may include a variety of devices having a wide varietyof components and/or capabilities.

For example, a network may include a general-purpose computer thatincludes a storage device and that has the capability of storing data onthe storage device. The same network also may include a stereoentertainment system that is capable of playing music, and a router orgateway that is capable of sending data to a computing device that isaccessible through the network.

Moreover, in a network environment, the components and capabilities ofone networked device may be leveraged by other networked devices. In theabove example, the stereo may be able to leverage storage capabilitiesat the general-purpose computer.

SUMMARY

Interoperability in a home network may be provided using a local proxyserver. An advertised capability of a first device in the home network,and a function requested of the first device that corresponds to theadvertised capability both are identified. A second device capable ofperforming the function from among multiple devices that are remote tothe first device and accessible to the local proxy server is selected,and that selected second device is coordinated with to perform thefunction.

Implementations may include one or more of the following features. Forexample, the second device may be selected without human intervention.The presence of the first device in a home network may be detected, andthe function to be performed may be determined based on the presence ofthe first device in the home network. Data on the first device in thehome network may be identified, and the function to be performed may bedetermined based on the identified data.

A set of rules may be accessed. Each rule may associate a function withan advertised capability. The function to be performed may be determinedbased on the identified advertised capability and the accessed workflowinformation. The second device capable of performing the function may beselected based on accessed set of rules. The function may be performedusing the selected second device in a manner that is transparent to anoperator for whom the function is performed.

The second device may be a device in the home network or may be a deviceassociated with a trusted system. A communication session may beestablished between the local proxy server and the trusted system, ormay be established between the local proxy server and the first devicein the home network.

Implementations of the techniques discussed above may include a methodor process, an apparatus or system, or computer software on acomputer-accessible medium.

The details of one or more implementations set forth in the accompanyingdrawings and the description below. Other features will be apparent fromthe description and drawings, and from the claims.

DESCRIPTION OF DRAWINGS

FIG. 1 is a block diagram illustrating an exemplary communicationssystem capable of providing services to devices used in a home network.

FIG. 2 is a flow chart showing a process for automatically determiningcapabilities of devices used in a home network.

FIG. 3 is a block diagram illustrating communications between arequesting device, a home-networking gateway, and a providing device onthe home network to provide a capability to the requesting device.

FIG. 4 is a block diagram illustrating communications between arequesting device, a home-networking gateway, and a host system toprovide a capability to the requesting device.

FIG. 5 is a flow chart depicting a process for automatically providing aservice based on detecting a device.

Like reference symbols in the various drawings indicate like elements.

DETAILED DESCRIPTION

A home-networking gateway may automatically provide a function based ondata identified on a device on a home network. The home-networkinggateway may perform the function using another device that is capable ofperforming the function and is accessible to the home-networkinggateway.

Referring to FIG. 1, a home networking system 100 includes multiplehome-networked devices 112 (“devices”) connected to each other and to ahome-networking gateway 115. Some of the devices are wireless devices.The home-networking gateway 115 is connected to a host system 120through a communication device 119 over communication links 130.

The home networking system 100 enables the devices 112 to communicatewith the host system 120 through the home-networking gateway 115 usingthe single communication device 119. The devices 112, thehome-networking gateway 115, and the communication device 119 may beincluded in a home network 110 physically located in a personalresidence (e.g., a single-family dwelling, a house, a townhouse, anapartment, or a condominium). The home-networking gateway 115 generallyis local to the home network 110. The home-networking gateway 115 islocated logically between the devices 112 and a host system 120 that isexternal to the home network 110. The host system 120 maybe, forexample, an Internet access provider device, an Internet serviceprovider device, an online host system proxy server, or another externalsystem device.

The devices 112 and the home-networking gateway 115 typically arelocated in a physical place that enables the home-networking gateway 115to network with the devices 112. In one implementation, for example, thehome-networking gateway 115 is physically located in a personalresidence, and the devices 112 are physically located such thatcommunications with the home-networking gateway 115 are enabled andmaintained. For instance, when the home-networking gateway 115 isphysically located in a personal residence, the devices 112 also may bephysically located in the personal residence. However, the location ofthe home-networking gateway 115 in the personal residence does notnecessarily preclude one or more of the devices 112 from being networkedto the home-networking gateway 115 from a remote location. Similarly,the location of the home-networking gateway in the personal residencedoes not necessarily preclude use of one or more of the devices 112 fromoutside of the personal residence or communication by those devices withthe host system 120 through the home-networking gateway 115. Forinstance, the devices 112 may include one or more portable computingdevices that may be taken outside of the personal residence and stillremain connected through a wireless access point to the home-networkinggateway 115 located within the personal residence.

The devices 112 may include one or more general-purpose computers (e.g.,personal computers), one or more special-purpose computers (e.g.,devices specifically programmed to communicate with the home-networkinggateway 115 and/or the host system 120), or a combination of one or moregeneral-purpose computers and one or more special-purpose computers.Other examples of devices 112 include a workstation, a server, anappliance (e.g., a refrigerator, a microwave, and an oven), anintelligent household device (e.g., a thermostat, a security system, aheating, ventilation and air conditioning (HVAC) system, and a stereosystem), a device, a component, other physical or virtual equipment, orsome combination of these elements capable of responding to andexecuting instructions within the system architecture.

FIG. 1 shows several implementations and possible combinations ofdevices and systems used within the home networking system 100. Forbrevity, only a few illustrative elements are included in homenetworking system 100.

As illustrated by FIG. 1, examples of devices 112 may include, but arenot limited to, a personal computer with a Windows™ operating system(OS) 112 a, a stereo entertainment system 112 b capable of playingmusic, a TV set-top box 112 c, a game device 112 d, a digital camera 112e, a scanner 112 f that digitizes an optical image to produce an imagerepresented as binary data, a color printer 112 g, a monochrome printer112 h (such as a laser printer than uses black toner), a wireless accesspoint (WAP) 112 i, a laptop or otherwise portable computer 112 j, and apersonal digital assistant (PDA) 112 k. Some of the devices, such as apersonal computer with Windows™ OS 112 a, a stereo entertainment system112 b, a TV set-top box 112 c, a game device 112 d, and a scanner 112 e,typically communicate with the home-networking gateway 115 through awired network.

Some of the other devices, such as a laptop computer 112 j and a PDA 112k, typically communicate with the home-networking gateway 115 using awireless access point 112 i. When devices communicate using wirelessaccess point 112 i, they may be referred to as wireless devices.Wireless devices are not limited to portable devices. For example, adesktop personal computer, such as a personal computer with a Windows™OS 112 a, may communicate using wireless access point 112 i.Specifically, the wireless devices communicate over a wirelesscommunications pathway to the wireless access point 112 i. The wirelessaccess point 112 i is connected to home-networking gateway 115 throughthe wired network and transmits communications received from wirelessdevices to the home-networking gateway 115. In some implementations, thewireless access point 112 i may be a component of the home-networkinggateway 115.

A wireless communications pathway may use various protocols tocommunicate from a wireless devices to a′wireless access point 112 i.For example, the wireless communications pathway may use wirelesstechnology based on the Institute of Electrical and ElectronicsEngineers, Inc. (IEEE) 802.11 standard (such as 802.11b or 802.11a). Thewireless communications pathway also may use wireless technology basedon the Bluetooth approach for short range wireless communications, otherpersonal area network (PAN) technologies, or other wireless technology,such as the HiperLan2 standard by the European TelecommunicationsStandards Institute (ETSI).

Some of the devices 112, such as the personal computer with a Windows OS112 a, the laptop computer 112 j, and the PDA 112 k, include softwarefor logging on to the host system 120 using a particular user associatedwith the user of the device. Such devices may be referred to as clientdevices. Other devices, such as stereo entertainment system 112 g, mayinclude software for logging on to host system 120 without identifyingan associated user of the user of the device. Yet other devices, such asTV set-top 112 c and game device 112 d, may be configured to functioneither as a client device or a non-client device depending on thefunction being performed.

The home-networking gateway 115 may include a home gateway device, suchas a gateway, a router, or another communication device. Thehome-networking gateway 115 also may include a digital hub capable ofreceiving broadcast video signals, receiving communication data (such asthrough a broadband connection), and distributing the signals and datato devices 112. The home-networking gateway 115 may include anothercommunications device and/or a home entertainment device, such as aradio tuner, a TV tuner, a portable music player, and a personal videorecorder. The home-networking gateway 115 communicates with a hostsystem 120 over communications links 130. In some implementations, thehost system 120 may be an online access provider, such as an Internetaccess provider or an Internet service provider.

The home-networking gateway 115 typically connects to the host system120 using a communication device 119. Examples of the communicationdevice 119 may include (and are not limited to) a satellite modem 119 a,an analog modem 119 b, a cable modem 119 c, and a DSL modem 119 d. Thehome-networking gateway 115 uses the communication device 119 tocommunicate through communication links 130 with the host system 120.The communication links 130 may include various types of communicationdelivery systems that correspond to the type of communication device 119being used. For example, if the home-networking gateway 115 includes asatellite modem 119 a, then the communications from a device 112 and anassociated home-networking gateway 115 may be delivered to the hostsystem 120 using a satellite dish 130 a and a satellite 130 b. Theanalog modem 119 b may use one of several communications links 119, suchas the satellite dish 130 a and satellite 130 b, the Public SwitchedTelephone Network (PSTN) 130 d (which also may be referred to as thePlain Old Telephone Service or POTS), and the Cable Modem TerminationSystem (CMTS) 130 d. The cable modem 119 c typically uses the CMTS 130 dto deliver and receive communications from the host system 120. The DSLmodem 119 d typically delivers and receives communications with the hostsystem 120 through a Digital Subscriber Line Access Multiplexer (DSLAM)130 e and an Asynchronous Transfer Mode (ATM) network 130 f.

The home networking system 100 may use various protocols to communicatebetween the devices 112 and the home-networking gateway 115 and betweenthe home-networking gateway 115 and the host system 120. For example, afirst protocol may be used to communicate between the devices 112 andthe home-networking gateway 115, and a second protocol may be used tocommunicate between the home-networking gateway 115 and the host system120. In one implementation, the first protocol and the second protocolmay be the same. In another implementation, the first protocol and thesecond protocol may be different. The home-networking gateway 115 mayinclude different hardware and/or software modules to implementdifferent home networking system protocols.

The home-networking gateway 115 may store or otherwise includeconfiguration information 115 a, device capability information 115 b,host system capability information 115 c, and capability workflowinformation 115 d. The home-networking gateway 115 may includeconfiguration information 115 a. The configuration information 115 a maybe stored as a table, a list, or other type of data structure (e.g., anExtensible Mark-up Language (XML) file). The configuration information115 a may include identifying information 115 a, such as a MAC (“MediaAccess Control”) address and/or a network address, that may uniquelyidentify a home-networking gateway 115. The identifying information 115a also may include a user account that is permitted to access the hostsystem 120 and connectivity information that describes how to establisha communication session with the host system 120.

The configuration information 115 a may include device information fordevices 112 that are associated with the home-network 110. Deviceinformation may include a device identifier for a device, such asdevices 112 a-112 k. The device identifier may include a hardware deviceidentifier, such as a MAC address, and/or a network address, such as astatic IP address associated with the device or a dynamic IP address.The dynamic IP address may be assigned by home-networking gateway 115,by some other network device, or by the host system 120 through theDynamic Host Configuration Protocol or another protocol that enables thedynamic allocation of an IP address to a device on a network. The deviceinformation associated with each device may include, for example, thetype of device (e.g., a client or a non-client device), the class ofdevice (e.g., a gaming device, a personal computer, or a PDA), the typeof platform (e.g., the type of hardware, such as a personal computerwith a Windows™OS, a PDA, a home appliance, or an entertainment device),and/or the operating environment (e.g., the operating system type and/orversion).

The device information also may include a user-assigned name. Theuser-assigned name may be referred to as a familiar name or a nickname.For example, an identifier for a particular game device may beassociated with the user-assigned name of “Billy's game device.” Thedevice information also may include parental control information orother types of access restrictions that are associated with the device.The parental control information may include different levels ofparental control restrictions associated with the device.

The configuration information 115 a may include protocol informationnecessary to configure the home-networking gateway 115 to communicatewith devices 112. Protocol information may include protocol informationthat describes how to establish communication with one or more ofdevices 112, how to configure the wireless access point 112 i, or how toconfigure wireless devices, such as the laptop computer 112 j or the PDA112 k. The configuration information for how to configure the wirelessaccess point 112 i, the laptop computer 112 j, and the PDA 112 k tocommunicate with one another may be referred to as wirelessconfiguration information. Wireless configuration information stored onthe home-networking gateway may include a security key, such as a wiredequivalent privacy (WEP) key that may be used to encrypt and decrypttransmitted data, and a wireless network name, such as a service setidentifier (SSID) that identifies the particular network. Theconfiguration information 115 a also may include other types of wirelessconfiguration information, such as a level of encryption (e.g., 40-bitencryption or 128-bit encryption) associated with a WEP key. The storageof such wireless configuration information may be useful for a wirelessdevice, such as laptop computer 112 f that must maintain commonconfiguration information with a wireless access point to enablecommunications with the wireless access point. For instance, a wirelessdevice and a wireless access point may be required to maintain thefollowing configuration information in common to enable them tocommunicate: a WEP key, a SSID, a list of devices that are permittedaccess, and a level of encryption associated with the WEP key (e.g.,40-bit encryption or 128-bit encryption).

The configuration information 115 a also may include a list of devicesthat are permitted access to the home network. For example, theconfiguration information 115 a may include a list of MAC addresses thatuniquely identify the devices that are permitted access to the homenetwork.

The home-networking gateway 115 also may include device capabilityinformation 115 b that identifies capabilities and components of devices112 that are available for use by the home-networking gateway 115. Thehome-networking gateway 115 may use the device capability information115 b to provide a service using a capability or a component of one ofthe devices 112 to another of the devices 112. The device capabilityinformation 115 b may be stored in a table, a list, or other type ofdata structure (e.g., an XML file). The device capability information115 b may include a list of capabilities or components, and associate adevice with each listed capability or component, as illustrated in thetable below.

CAPABILITY DEVICE PRIORITY Storage Windows PC 112a 1 Camera Digitalcamera 112e 1 Monochrome printing Color printer 112g 2 Monochromeprinting Monochrome printer 112h 1 Color printing Color printer 112g 1

Although the illustrated table uses a reference number of FIG. 1 toidentity a particular device, the device capability information 115 bmay use device identifying information, such as a MAC address, asdescribed previously. Additionally or alternatively, the devicecapability information 115 b may identify a particular device using adevice nickname, which was described previously.

In some implementations, the device capability information 115 b alsomay include a priority to indicate the relative preference for using thedevice to perform the capability. For example, as illustrated in thetable, monochrome printing is available both using the color printer 112g and using the monochrome printer 112 h. The priority of monochromeprinting using monochrome printer 112 h is one, and the priority ofmonochrome printing using color printer 112 g is two. The priority ofthe monochrome printer 112 h is lower relative to the priority of colorprinter 112 g. This indicates that the monochrome printer 112 h ispreferred over the color printer 112 g for monochrome printing. This maybe, for example, because the cost to print a monochrome page on themonochrome printer 112 h is lower than the cost to print a monochromepage on the color printer 112 g. A device also may be preferred over adifferent device offering the same capability, for example, due to thedevice's location, such as when one device is more centrally locatedthan another device.

The home-networking gateway 115 may include host system capabilityinformation 115 c that identifies services accessible using the hostsystem 120. The home-networking gateway 115 may use the host systemcapability information 115 c to provide a host system-based service toone of the devices 112. The host system capability information 115 c maybe stored in a table, a list, or other type of data structure (e.g., anXML file). The host system capability information 115 c may include alist of services available from the host system 135. In someimplementations, the host system capability information 115 c also mayinclude a list of services available from systems in addition to theservices available from the host system 120. For example, the hostsystem capability information 115 c may include a list of web servicesand an Internet address associated with each web service. In someimplementations, the host system capability information 115 c also mayinclude information about how to access the identified service (e.g.,connection information, user account and password information, orinformation to initiate the identified service using a remote procedurecall).

Information about host system capabilities may be provided from the hostsystem 120 to the home-networking gateway 115. The information abouthost system capabilities may be stored as host system capabilityinformation 115 c. For example, a service information directory 124 mayidentify the services available from the host and, optionally, how toaccess each of the services using the host system, may be accessible tothe home-networking gateway 115. The home-networking gateway 115 mayaccess the service information directory 124 and store appropriateinformation on the home-networking gateway 115.

Alternatively, information about host system capabilities may beavailable to the home-networking gateway 115 using a protocol thatsupports automatic discovery of system capabilities, such as UPnP(“Universal Plug and Play”). When the home-networking gateway 115 andthe host system 120 establish a connection, the host system 120 sends amessage that announces its presence and its capabilities, as does thehome-networking gateway 120. By using UPnP, the home-networking gateway115 and the host system 120, each become aware of the capabilities ofthe other. The home-networking gateway 115 stores the capabilities ofthe host system 120 in the host system capability information 115 c. Insome implementations, the host system 120 also may store thecapabilities of the home-networking gateway 115 and to enable the hostsystem 120 leveraging of home network capabilities.

The home-networking gateway 115 may include capability workflowinformation 115 d that identifies a sequence (or other type ofcollection) of one or more procedures to be accomplished when aparticular capability or a particular device is detected. Thehome-networking gateway 115 may use the capability workflow information115 d to automatically provide one or more capabilities, services, orboth without receiving an explicit request from a device to perform aparticular service or use a particular capability. The capabilityworkflow information 115 d may be stored as a table, a list, or othertype of data collection (e.g., an XML file) that associates a particularcapability or a particular device with a particular script thatidentifies a procedure or procedures to be performed. The capabilityworkflow information 115 d also may includes the script or otherprocedures to be performed. Alternatively or additionally, the script orother procedures may be stored remotely from the home-networking gateway115. For example, the script or other procedures may be stored onstorage local to the personal computer with a Windows™ OS 112 a. Thehome-networking gateway 115 executes the particular script when thedevice or the capability is detected.

When a device, such as one of devices 112, is connected to the homenetwork, the home-networking gateway 115 and the device establishcommunications using a protocol known to both devices. For example, UPnPmay be used. When the device is connected to the home network, thedevice may announce its presence by sending a message over the network.The sent message may include device identifying information and a listof one or more capabilities or components that are associated with thedevice. The home-networking gateway 115 may receive the message anddetect the device and the device's capabilities based on the receivedmessage. The home-networking gateway 115 may store each capability inassociation with device identifying information in device capabilityinformation 115 b. The home-networking gateway 115 also may receivedevice identifying information from the detected device and store thereceived information in configuration information 115 a. In someimplementations, the home-networking gateway 115 may receive and storeother types of information, such as a device nickname and parentalcontrol information, that is associated with the device.

A device, such as one of the devices 112, may request a service from thehome-networking gateway 115. The home-networking gateway 115 receivesthe service request and accesses the device capability information 115 bto determine whether the to service is available from one of the otherdevices on the home network. If so, the home-networking gateway 115leverages the capability or the component of the device to provide theservice to the requesting device. The home-networking gateway may besaid to spoof, or otherwise fool, a networked device, such as one ofdevices 112, by the appearance that the home-networking gateway 315itself provides capabilities that are provided using a second networkeddevice. In this way, the home-networking gateway may transparentlyprovides a service to the networked device using the second networkeddevice such that the networked device is unaware that the secondnetworked device is providing the capability.

For example, the PDA 112 k may send to the home-networking gateway 115 arequest to store a data file (or other type of data collection). Thesent request includes the data file to be stored. When thehome-networking gateway 115 receives the storage request and theassociated data file, the home-networking gateway 115 accesses thedevice capability information 115 b and determines that a storagecapability is available on the Windows PC 112 a. The home-networkinggateway 115 forwards to the Windows PC 112 a the storage request and theassociated data file. The Windows PC 112 a stores the data file. Usingthe device capability information 115 b, the home-networking gateway 115may be able to automatically trigger an appropriate process to leveragethe detected capability without requiring user intervention. In thisexample, the home-networking gateway 115 automatically initiates aprocess on the Windows PC 112 a to store the data file received from thePDA 112 k.

More elaborate scenarios are possible, as one skilled in the art wouldappreciate. For instance, when a person drives the person's automobileinto the garage of the person's residence, the stereo system in theautomobile may automatically establish a wireless connection with homenetwork. This automated discovery may be accomplished, for example,using Blue Tooth wireless support. The automobile stereo system mayannounce its presence and its settings on the home network, and thehome-networking gateway may respond by executing a script identified bycapability workflow information 115 d to automatically perform a seriesof actions. For example, the home-networking gateway 115 may power on ahome entertainment system and tune a radio on the home entertainmentsystem to the same station as set in the automobile stereo system.Additionally or alternatively, when the home-networking gatewayperceives the automobile stereo system is on the network, thehome-networking gateway may turn on a predetermined set of lights, openelectric window shades, adjust the home thermostat, and turn on ageneral-purpose computer.

Similarly, the home-networking gateway 115 may advertise content that isphysically stored host system 120 and services available thorough a hostsystem service as though the content was stored on the home-networkinggateway 115 itself. This may allow one of the devices 112 to perceivethe content on the home-networking gateway 115 without requiring thatthe content itself be stored on the home-networking gateway 115. Thehome-networking gateway 115 may access and provide a host system serviceto the home network as though the service was provided by thehome-networking gateway 115. The capability to spoof host systemcapabilities may be particularly advantageous when large amounts ofcapacity is required, for example, in the storage of music and movies.The content is stored outside of the home network, and yet the contentis transparently available to the home-networking gateway. For example,a library of movies or sound recordings may be stored on the host systemand yet transparently available for access by one of the devices 112.This may result in a decreased amount of storage required in the homenetwork 110.

Additionally or alternatively, the host system 120 may be used foroff-site storage of memorable or valuable data files. For example,irreplaceable historic or family pictures may be digitized using scanner112 f and saved both on storage located on the home-network 110 and onstorage located on the host system 120. The redundant pictures on thehost system 120 may be preserved in the event of a catastrophic loss ofthe storage on the home network 110. The irreplaceable content may bemore easily accessible outside of the home network, which may encouragea greater use of off-site storage for important or irreplaceable items.

In another example, the home-networking gateway 115 may spoof a musicstream from a host system as local music storage. The music service onthe host system may be advertised as local music storage.

The home-networking gateway 115 may provide a service or a capabilityavailable from one of the devices 112 or from the host system 120 basedon the detection of a device or a capability, without requiring anexplicit request from a device for the service. For example, thehome-networking gateway 115 may detect a particular type of device or aparticular capability, for example, when a device announces its presenceand its capability on the network using UPnP. The home-networkinggateway 115 may determine whether a script is associated with thedetected device or the detected capability by capability workflowinformation 115 d. If so, the home-networking gateway 115 executes theassociated script to provide a service or capability to the homenetwork.

For example, when the digital camera 112 e is connected to the homenetwork, the digital camera 112 e announces its presence using UPnP bysending a message over the home network. The digital camera 112 e alsoannounces in the message a capability as a camera and a storagecapability that includes stored digital photographs. The home-networkinggateway 115 receives the message and sends a reply message. The replymessage by the home-networking gateway 115 announces the presence of thehome-networking gateway 115 and the capabilities available through thehome-networking gateway 115. The capabilities included in the replymessage are the capabilities identified in the device capabilityinformation 115 b and/or the services identified in the host systemcapability information 115 c.

Based on the capability workflow information 115 d, the home-networkinggateway 115 executes a script associated with the detection ofphotographs at a remote device with which it communicates. The scriptalso may be part of capability workflow information 115 d or may bestored elsewhere, as described either with respect to capabilityworkflow information 115 d. The home-networking gateway 115 may accessthe photographs stored in the digital camera 112 e and may store thephotographs in a location specified in the script (e.g., on storageassociated with the personal computer 112 a), send the storedphotographs to a photograph print service available from a website andorder a predetermined quantity and type of photograph prints, and/orpost the stored photographs to a family photograph album web page sothat family members may access the photographs from a remote location.Using the interoperability provided by the home-networking gateway 115,the photographs taken with the digital camera 112 e are stored locally,sent to a photograph print service, and/or published in a familyphotograph album, without user intervention.

The combination of the interoperability provided by the home-networkinggateway and a device synchronization function may be particularlyadvantageous. For example, when a PDA establishes a wireless connectionwith the home-networking gateway, the PDA may announce its presence onthe home network. Based on the detection of the PDA, the home-networkinggateway 115 may initiate a synchronization function that transparentlyuses storage that is available through the home-networking gateway and apersonal information management function that provides a calendar andaddress book by the host system 120. For example, the home-networkinggateway 115 may synchronize, or otherwise copy, a portion or all of theinformation from a calendar and an address book on the PDA 112 k tostorage on the home network, such as storage associated with thepersonal computer 112 a. The home-networking gateway 115 also may sendthe calendar and address book information to a calendar and address bookprovided by the host system 120. The PDA calendar and address bookinformation is available locally on the home network and available onthe host system 120, without requiring user intervention. Theavailability of the calendar and address book information on the hostsystem 120 may be advantageous. For example, the calendar and addressbook information may be accessible from any location that is able toaccess the host system.

FIG. 2 shows a process 200 to identify a capability of a device on ahome network. The process 200 may be performed, for example, by ahome-networking gateway, such as home-networking gateway 115 of FIG. 1.

The process 200 begins when a message that announces the presence of adevice on the home network is received by the home-networking gateway(step 210). The message identifies the device that sent the message andidentifies one or more capabilities that may be performed using thedevice.

The home-networking gateway stores the capability identified in thereceived message (step 220) and associates the identity of the messagesender with the stored capability (step 230). For example, thehome-networking gateway may modify device capability information, suchas item 115 b of FIG. 1, to include the capabilities included in thereceived message and associate each capability with the identity of thedevice that sent the message.

The home-networking gateway broadcasts a list of capabilities availableusing the home-networking gateway over the network (step 240). The listof capabilities may include capabilities of the home-networking gatewayitself and capabilities that are available from other devices that areaccessible through the home-networking gateway. For example, the list ofcapabilities accessed may be an implementation of the device capabilityinformation 115 b and/or host system capability information 115 c ofFIG. 1. This broadcast may announce the presence of the home-networkinggateway to the device that sent the received message. Additionally oralternatively, this broadcast may announce to other devices on thenetwork the updated capabilities available thorough the home-networkinggateway (e.g., the capabilities available from the device that sent thereceived message).

The process 200 also may be used by a home-networking gateway toidentify the services that are available from a host system, such ashost system 120 of FIG. 1. The home-networking gateway receives amessage from the host system announcing the presence and servicesavailable on the host system (step 210), and the process proceeds asdescribed previously.

FIG. 3 illustrates a process 300 involving a requesting device 310, ahome-networking gateway 315, and a providing device 325, all of whichcommunicate using a home network, to provide a capability to therequesting device 310. The requesting device 310 may be animplementation of one of the devices 112 of FIG. 1, as may be theproviding device 325. The home-networking gateway 315 may be, forexample, an implementation of the home-networking gateway 115 of FIG. 1.

The process 300 begins when the requesting device 310 sends to thehome-networking gateway 315 a request to use a particular capability ofthe home-networking gateway (step 330 r). For example, the requestingdevice 310 may be aware of capabilities available from thehome-networking gateway, for example, through a mutual discoveryprocess, as described previously with respect to FIGS. 1 and 2.

The home-networking gateway 315 receives the request to use a particularcapability of the home-networking gateway (step 330 g). Thehome-networking gateway 315 determines whether the requested capabilityis available on the home-networking gateway 315 itself (step 334 g). Ifso, the home-networking gateway 315 provides the capability using theresources of the home-networking gateway 315 itself. This may bereferred to as using the native home-networking gateway resources (step338 g).

When the home-networking gateway 315 determines that the requestedcapability is not available on the home-networking gateway 315 itself(step 334 g), the home-networking gateway accesses device capabilityinformation (340 g). The device capability information may include alist of capabilities available using other devices on the home network,as described previously with respect to device capability information115 b of FIG. 1.

The home-networking gateway 315 determines whether the requestedcapability is included in the capabilities included in the devicecapability information (step 344 g). In other words, the home-networkinggateway 315 determines whether the capability may be spoofed usinganother device on the home network. If not, the home-networking gateway315 sends a message to the requesting device 310 that the operationfailed (e.g., that the particular capability is not available throughthe home-networking gateway 315) (step 348 g). The requesting device 310receives the message that the operation failed and the process 300 ends(step 348 r).

When the home-networking gateway 315 determines that the capability maybe spoofed using another device on the home network (here, the providingdevice 325) (step 344 g), the home-networking gateway 315 sends to theproviding device 325 a request to use the capability (step 350 g).

The providing device 325 receives the request (step 350 p), provides thecapability (step 354 p), and sends an acknowledgment to thehome-networking gateway 315 (step 358 p).

In one example, the providing device 325 may receive a request toprovide storage for a data file that is included in the request to use acapability (here, a storage capability) in step 350 p. The providingdevice 325 stores the data file on a storage device accessible to theproviding device 325. The providing device 325 sends an acknowledgmentmessage to the home-networking gateway 315 that indicates the data filewas successfully stored and the location in which the data file wasstored.

In another example, the providing device 325 may receive a request toretrieve a particular data file in storage in the request to use acapability (here, a capability to retrieve from storage) in step 350 p.The providing device 325 retrieves the data file from a storage deviceaccessible to the providing device 325. The providing device 325 sendsan acknowledgment message to the home-networking gateway 315 thatincludes the retrieved data file.

The home-networking gateway 315 receives the acknowledgment message(step 358 g). Steps 350 g-358 g may be referred to as a devicecapability spoofing sub-process 360.

When the home-networking gateway 315 provides the capability usingnative home-networking gateway resources (step 338 g) or when thehome-networking gateway 315 uses the providing device 325 to provide thecapability (sub-process 360), the home-networking gateway 315 sends tothe requesting device 310 a message that the operation succeeded (step364 g). The message may include data or information that is appropriateto the particular capability requested by the requesting device 310. Forexample, the message that the operated succeeded may include a retrieveddata file or a location that was used to store data file. The requestingdevice 310 receives the message that the operation succeeded (step 364r).

The home-networking gateway may be said to spoof, or otherwise fool, therequesting device 310 by the appearance that the home-networking gateway315 itself provided the capability. In other words, the requestingdevice 310 is unaware of that the providing device 325 provided thecapability. This may be referred to as making a capability transparentlyavailable to a requesting device.

FIG. 4 is a shows a process 400 involving a requesting device 410, ahome-networking gateway 415, and a host system 420 to provide acapability to the requesting device 410. The requesting device 410 maybe an implementation of one of the devices 112 of FIG. 1 or therequesting device 310 of FIG. 3. The home-networking gateway 415 may bean implementation of home-networking gateway 115 of FIG. 1 orhome-networking gateway 315 of FIG. 3. The host system 420 may be a hostsystem, such as the host system 120 of FIG. 1.

The process 400 begins when the requesting device 410 sends to thehome-networking gateway 415 a request to use a particular capability ofthe home-networking gateway 415 (step 430 r). The home-networkinggateway 415 receives the request (step 430 g), determines whether therequest can be satisfied using the native capabilities of thehome-networking gateway 415 (step 434 g), and, if so, provides thecapability using native home-networking gateway resources (step 438 g),all of which have been described previously with respect to steps 330g-338 g of FIG. 3. The home-networking gateway 415 accesses devicecapability information (step 440 g), and determines whether thecapability is able to be spoofed using a home network device (step 444g), and, if so, performs a device capability spoofing sub-process 360,all of which have been described previously with respect to steps 340g-344 g and sub-process 360 of FIG. 3.

When the home-networking gateway 415 determines that the capability isnot able to be provided by a device on the home network (step 444 g),the home-networking gateway 415 accesses host system capabilityinformation (step 468 g). The host service capability information mayinclude a list of services available from the host system 420 and how toaccess each service. The host system capability information may be animplementation of host system capability information 115 c of FIG. 1.

The home-networking gateway 415 determines whether the requestedcapability is included in the capabilities included in the host systemcapability information (step 470 g). In other words, the home-networkinggateway 415 determines whether the capability may be spoofed using thehost system. If not, the home-networking gateway 415 sends a message tothe requesting device 410 that the operation failed (e.g., that theparticular capability is not available through the home-networkinggateway 415) (step 472 g). The requesting device 410 receives themessage that the operation failed and the process 400 ends (step 472 r).

When the home-networking gateway 415 determines that the capability maybe spoofed using the host system 420 (step 470 g), the home-networkinggateway 415 sends to the host system 420 a request to access a hostsystem service to use the host system capability (step 474 g).

The host system 420 receives the request (step 474 p), provides thecapability by performing the requested service (step 476 p), and sendsan acknowledgment to the home-networking gateway 415 (step 478 p).

In one example, the host system 420 may receive a request to provide aparticular movie that is available from the host system 420. The hostsystem 420 accesses the movie and sends an acknowledgment message to thehome-networking gateway 415 that includes the movie.

The home-networking gateway 415 receives the acknowledgment message(step 478 g). Steps 474 g-478 g may be referred to as a host systemcapability spoofing sub-process 480.

When the home-networking gateway 415 provides the capability usingnative home-networking gateway resources (step 438 g), when thehome-networking gateway 415 uses a device spoofing capability to providethe capability (sub-process 360), or when the home-networking gateway415 uses the host system to provide the capability (sub-process 480),the home-networking gateway 415 sends a message that the operationsucceeded (step 484 g). The message may include data or information thatis appropriate to the particular capability requested by the requestingdevice 410. For example, the message that the operated succeeded mayinclude a retrieved data file, a location that was used to store datafile, a requested movie, or a requested song. The requesting device 410receives the message that the operation succeeded (step 484 g).

In some implementations, the home-networking gateway may use a processthat is less hierarchical than the process 400. For example, thehome-networking gateway may access a consolidated list of capabilitiesthat includes all of the capabilities available using thehome-networking gateway itself, using any of the devices on the homenetwork, or using the host system. The home-networking gateway thenaccesses the requested capability from the appropriate source (e.g., thehome-networking gateway, a device on a home network, or the hostsystem).

FIG. 5 depicts a process 500 for automatically providing a service basedon detecting a device. The process 500 may be performed by ahome-networking gateway, such as home-networking gateway 115 of FIG. 1.

The process 500 begins with the home-networking gateway monitoring thehome network (step 510). For example, the home-networking gateway may bewaiting to receive a UPnP announcement of the presence and/or capabilityof a device. A device may be detected (step 520), for example, when thehome-networking gateway receives a UPnP message announcing that a devicehas connected to the network.

When a device is detected (step 520), the home-networking gatewaydetermines whether action is required (step 530). The home-networkinggateway may determine whether action is required based on the type ofthe device detected (e.g., a PDA, a camera with stored photographs, andan automobile stereo system). The home-networking gateway may determinewhether action is required by determining whether a script is associatedwith the particular type of device detected. This may be accomplished,for example, when the home-networking gateway accesses capabilityworkflow information, such as capability workflow information 115 d ofFIG. 1, that associates a particular script with a particular type ofdevice. When the home-networking gateway determines that a script isassociated with the type of detected device, then the home-networkinggateway determines that action is required. When the home-networkinggateway determines that a script is not associated with the detectedtype of device, then the home-networking gateway determines that actionis not required.

In some implementations, the home-networking gateway may determinewhether action is required based on the detection of a particular device(e.g., a particular PDA of several PDAs that may connect to the homenetwork) or may determine whether action is required based on aparticular capability detected.

When the home-networking gateway determines that no action is required(step 540), the home-networking gateway continues monitoring the homenetwork (step 510).

When the home-networking gateway determines that action is required(step 540), the home-networking gateway performs the required action(step 550). For example, the home-networking gateway accesses andexecutes the script associated with the detected type of device incapability workflow information.

The techniques described with respect to FIGS. 1-5 are illustrative. Thecapabilities spoofed are limited by the capabilities of the system ordevice being spoofed.

Although the techniques and concepts have been described in which ahome-networking gateway spoofs a host system, a trusted system that maynot necessarily be in a host-client relationship with thehome-networking gateway may be used in place of the described hostsystem. Another type of trusted computing device also may be used toperform the described techniques and concepts. For example, ageneral-purpose computer accessible to the network, such as in apeer-to-peer relationship, or another trusted computer system may beused to perform the functions described as being performed by the hostsystem.

The techniques and concepts are applicable to home network devices otherthan a home-networking gateway. For example, a muter, a digital hub, ageneral-purpose computer, or a single-purpose configuration managementdevice may perform the functions described as being performed by thehome-networking gateway. The home-networking gateway or other similardevices may be referred to as a local proxy or a local proxy server.

Implementations may include a method or process, an apparatus or system,or computer software on a computer medium. It will be understood thatvarious modifications may be made that still fall within the followingclaims. For example, advantageous results still could be achieved ifsteps of the disclosed techniques were performed in a different orderand/or if components in the disclosed systems were combined in adifferent manner and/or replaced or supplemented by other components.

1-39. (canceled)
 40. A method for managing communications, the methodcomprising: receiving, at a local-networking gateway, a request from arequesting device located in a local network for performance of aparticular function; accessing, at the local-networking gateway, astored indication of a function capable of being performed by anotherdevice located in the local network; determining, based on havingaccessed the indication of the function capable of being performed bythe device, that the particular function cannot be completed by thedevice; selecting, in response to determining that the particularfunction cannot be completed by the device, from among a plurality ofexternal devices, a first external device based on the first externaldevice having characteristics of being capable of performing theparticular function, and available to perform the particular function,wherein the first external device is distinct from the local-networkinggateway, external to the local network, and accessible to thelocal-networking gateway; forwarding, from the local-networking gateway,the request for performance of the particular function to the firstexternal device; receiving, at the local-networking gateway, anindication that the first external device has performed the particularfunction requested by the requesting device located in the localnetwork; and sending to the requesting device, from the local-networkinggateway to the requesting device, an indication that the particularfunction requested has been performed.
 41. The method of claim 40,further comprising accessing, at the local networking gateway, a set ofrules that comprises rules to associate a function with an identifiedcapability.
 42. The method of claim 41, further comprising receivingindications of the functions capable of being performed by each ofmultiple devices based on the accessed set of rules.
 43. The method ofclaim 41, wherein selecting the first external device from among theexternal devices comprises selecting the first external device ascapable of performing the particular function based on the accessed setof rules.
 44. The method of claim 40, wherein forwarding the request forperformance of the particular function to the first external devicecomprises establishing a communication session between thelocal-networking gateway and the first external device.
 45. The methodof claim 44, wherein forwarding the request for performance of theparticular function to the first external device comprises rerouting therequest from the local-networking gateway to the first external device.46. The method of claim 40, wherein: receiving the request from therequesting device located in the local network for performance of theparticular function comprises receiving a request from the requestingdevice located in the local network for printing of a file; andreceiving the indication that the first external device has performedthe particular function requested by the requesting device located inthe local network comprises receiving an indication that a printer ofthe first external device has printed the file.
 47. The method of claim40, wherein: receiving the request from the requesting device located inthe local network for performance of the particular function comprisesreceiving a request from the requesting device located in the localnetwork for printing of a file; and receiving the indication that thefirst external device has performed the particular function requested bythe requesting device located in the local network comprises receivingan indication, from a printing service resource associated with thefirst external device, that the file printing requested by therequesting device located in the local network has been performed. 48.The method of claim 40, wherein: receiving the request from therequesting device located in the local network for performance of theparticular function comprises receiving a request from the requestingdevice located in the local network for printing of a photograph;receiving the indication that the first external device has performedthe particular function requested by the requesting device located inthe local network comprises receiving an indication, from a photographprinting service resource associated with the first external device,that the photograph printing requested by the requesting device locatedin the local network has been performed.
 49. The method of claim 48,wherein forwarding, from the local networking gateway, the request forperformance of the particular function to the first external devicecomprises forwarding, from the local-networking gateway, the request forperformance of the photograph printing function and at least onephotograph to the photograph printing service resource.
 50. The methodof claim 40, wherein: receiving the request from the requesting devicelocated in the local network for performance of the particular functioncomprises receiving a request from the requesting device located in thelocal network for storage of a file; and receiving the indication thatthe first external device has performed the particular functionrequested by the requesting device located in the local networkcomprises receiving an indication that a storage device associated withthe first external device has stored the file and an identifier of thelocation where the file has been stored.
 51. The method of claim 50,wherein forwarding, from the local networking gateway, the request forperformance of the particular function to the first external devicecomprises forwarding, from the local-networking gateway, the request forperformance of the storage function and the file to the storage device.52. The method of claim 40, wherein: receiving the request from therequesting device located in the local network for performance of theparticular function comprises receiving a request from the requestingdevice located in the local network for storage of a file; and receivingthe indication that the first external device has performed theparticular function requested by the requesting device located in thelocal network comprises receiving an indication, from a storage serviceresource associated with the first external device, that the filestoring requested by the requesting device located in the local networkhas been performed and a Uniform Resource Locator of the location wherethe file has been stored.
 53. The method of claim 40, wherein: receivingthe request from the requesting device located in the local network forperformance of the particular function comprises receiving a requestfrom the requesting device located in the local network for storage of aphotograph; and receiving the indication that the first external devicehas performed the particular function requested by the requesting devicelocated in the local network comprises receiving an indication, from aphotograph storage service resource associated with the first externaldevice, that the photograph storing requested by the requesting devicelocated in the local network has been performed and a Uniform ResourceLocator of the location where the photograph has been stored.
 54. Themethod of claim 40, wherein: receiving the request from the requestingdevice located in the local network for performance of the particularfunction comprises receiving a request from the requesting devicelocated in the local network for retrieval of a sound recording;receiving the indication that the first external device has performedthe particular function requested by the requesting device located inthe local network comprises receiving an indication that a soundrecording storage device associated with the first external device hasretrieved the sound recording requested by the requesting device locatedin the local network and the retrieved sound recording.
 55. The methodof claim 40, wherein: receiving the request from the requesting devicelocated in the local network for performance of the particular functioncomprises receiving a request from the requesting device located in thelocal network for retrieval of a movie; and receiving the indicationthat the first external device has performed the particular functionrequested by the requesting device located in the local networkcomprises receiving an indication that a movie storage device associatedwith the first external device has retrieved the movie requested by therequesting device located in the local network and the retrieved movie.56. The method of claim 40, wherein: receiving the request from therequesting device located in the local network for performance of theparticular function comprises receiving a request from the requestingdevice located in the local network for retrieval of a sound recording;and receiving the indication that the first external device hasperformed the particular function requested by the requesting devicelocated in the local network comprises receiving an indication, from asound recording retrieval service resource associated with the firstexternal device, that retrieval of the sound recording requested by therequesting device located in the local network has been performed andthe retrieved sound recording.
 57. The method of claim 40, wherein:receiving the request from the requesting device located in the localnetwork for performance of the particular function comprises receiving arequest from the requesting device located in the local network forretrieval of a movie; and receiving the indication that the firstexternal device has performed the particular function requested by therequesting device located in the local network comprises receiving anindication, from a movie retrieval service resource associated with thefirst external device, that retrieval of the movie requested by therequesting device located in the local network has been performed andthe retrieved movie.
 58. A method for managing communications, themethod comprising: receiving, at a local-networking gateway, a requestfrom a requesting device located in a local network for storage of afile; accessing, at the local-networking gateway, a stored indication ofa function capable of being performed by another device located on thelocal network; determining, based on having accessed the indication ofthe function capable of being performed by the device, that the storageof the file is not capable of being performed by the device; selecting,at the local-networking gateway, in response to determining that thestorage of the file is not capable of being performed by the device andwithout user intervention, from among a plurality of external devices, astorage device having characteristics of being: capable of storage ofthe file, and available to perform the function, wherein the storagedevice is distinct from the local-networking gateway, external to thelocal network, and accessible to the local-networking gateway;forwarding, from the local-networking gateway, the request for storageof the file to the storage device; receiving, at the local-networkinggateway, an indication that the storage device has stored the file andan identifier of the location where the file has been stored; andsending to the requesting device, from the local-networking gateway tothe requesting device, an indication that the local-networking gatewayhas stored the file.
 59. A method for managing communications, themethod comprising: receiving, at a local-networking gateway, a requestfrom a requesting device located in a local network for retrieval of amedia file; accessing, at the local-networking gateway, a storedindication of a function capable of being performed by another devicelocated on the local network; determining, based on having accessed theindication of the function capable of being performed by the device,that the retrieval of the media file is not capable of being performedby the device; selecting, at the local-networking gateway, in responseto determining that the retrieval of the media file is not capable ofbeing performed by the device and without user intervention, from amonga plurality of external devices, a media file storage device havingcharacteristics of being: capable of performing the retrieval of themedia file, and available to perform the retrieval of the media file,wherein the media file storage device is distinct from thelocal-networking gateway, external to the local network, and accessibleto the local-networking gateway; forwarding, from the local-networkinggateway, the request for retrieval of the media file to the media filestorage device; receiving, at the local-networking gateway, the mediafile; and sending to the requesting device, from the local-networkinggateway to the requesting device, an indication that thelocal-networking gateway has retrieved the media file even though themedia file storage device retrieved the media file.